﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using condortravel.operaciones.core.DataModel;
using CondorTravelOperacionesWeb.Source;

using condortravel.operaciones.business.operaciones;
using condortravel.operaciones.business.mantenimientoOperaciones;
using condortravel.operaciones.common;
using condortravel.operaciones.common.Log;

namespace CondorTravelOperacionesWeb.Pages.TourOperaciones
{
    public partial class FormConInformacionTour : PageBase
    {
        #region Business Objects
        private OperacionesServices operacionesServices;

        public OperacionesServices OperacionesServices
        {
            set { operacionesServices = value; }
        }
        private MantenimientoServices mantenimientoServices;

        public MantenimientoServices MantenimientoServices
        {

            set { mantenimientoServices = value; }
        }

        #endregion
        #region Eventos Pagina
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                cargaDatosIniciales();

            }
        }
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gvList_OnRowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "requerimientoGuia")
            {
                hCodigoDetalleTour.Value = e.CommandArgument.ToString();
                mostrarRecursosSolicitados();
                visualizarFicha(1, true);//listado
                habilitarFicha(1);
            }
            if (e.CommandName == "requerimientoTraslado")
            {
                hCodigoDetalleTour.Value = e.CommandArgument.ToString();
                mostrarRecursosSolicitados();
                visualizarFicha(2, true);//listado
                habilitarFicha(2);
            }
        }

        protected void gvTipoGuia_OnRowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "eliminarGuia")
            {
                operacionesServices.eliminarRecursoSolicitado(int.Parse(e.CommandArgument.ToString()));
                mostrarRecursosSolicitados();
                visualizarFicha(1, true);//listado
                habilitarFicha(1);
            }
          
        }


        protected void gvTipoTransporte_OnRowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "eliminarTransporte")
            {
                operacionesServices.eliminarRecursoSolicitado(int.Parse(e.CommandArgument.ToString()));
                mostrarRecursosSolicitados();
                visualizarFicha(2, true);//listado
                habilitarFicha(2);
            }
       
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gvList_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {

        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gvList_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {


                }

            }
        }


        protected void cboPaqueteProgramado_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cboPaqueteProgramado.SelectedValue != null){
                Tb_PaqueteProgramado paquete= operacionesServices.getPaqueteProgramado(int.Parse(cboPaqueteProgramado.SelectedValue));
                if (paquete != null)
                {
                    txtDesde.Text = paquete.fechaInicio.ToShortDateString();
                    txtHasta.Text = paquete.fechaFin.ToShortDateString();
                    txtNumTuristas.Text = paquete.nroTuristas.ToString();
                    //Mostrar el detalle de Programacion

                    //IList<Tb_Detalle_PaqueteProgramado> listaDetalle= operacionesServices.getListDetallePaqueteProgramado(paquete.paqueteTurProg_ID);                   


                }
            }
        }
        protected void cmdNuevoTransporte_Onclick(object sender, EventArgs e)
        {
            try
            {

                Tb_RecursosSolicitado recursoSolicitado = new Tb_RecursosSolicitado();
                recursoSolicitado.cantidad = int.Parse(txtCantidadTransporte.Text);
                recursoSolicitado.detalleTour_ID = int.Parse(hCodigoDetalleTour.Value);
                recursoSolicitado.tipoTransporte_ID = int.Parse(cboTipoTransporte.SelectedValue);
                recursoSolicitado.tipoRecurso = 2;
                recursoSolicitado.estadoRecursoSolicitado = 1;
                recursoSolicitado.estadoTour_ID = 100;
                operacionesServices.addRecursoSolicitado(recursoSolicitado);
                UCMessageForm.showMessage("La solicitud ha sido guardada exitosamente", ELogLevel.INFO);
                mostrarRecursosSolicitados();

            }
            catch (Exception exc1)
            {
                UCMessageForm.showMessage(exc1.Message, ELogLevel.ERROR);
            }
        }

        protected void cmdNuevoGuia_Onclick(object sender, EventArgs e)
        {
            try
            {

                Tb_RecursosSolicitado recursoSolicitado = new Tb_RecursosSolicitado();
                recursoSolicitado.cantidad = int.Parse(txtCantidad.Text);
                recursoSolicitado.detalleTour_ID = int.Parse(hCodigoDetalleTour.Value);
                recursoSolicitado.tipoGuia_ID = int.Parse(cboTipoGuia.SelectedValue);
                recursoSolicitado.tipoRecurso = 1;
                recursoSolicitado.estadoRecursoSolicitado = 1;
                recursoSolicitado.estadoTour_ID = 100;
                operacionesServices.addRecursoSolicitado(recursoSolicitado);
                UCMessageForm.showMessage("La solicitud ha sido guardada exitosamente", ELogLevel.INFO);
                mostrarRecursosSolicitados();

            }
            catch (Exception exc1)
            {
                UCMessageForm.showMessage(exc1.Message, ELogLevel.ERROR);
            }
        }
        protected void cmdAddProgramacion_Click(object sender, EventArgs e)
        {
            try 
            {
                Tb_Tour tour=new Tb_Tour();
                tour.tour_ID=0;
                tour.fecha=DateTime.Parse(txtFechaTour.Text);
                tour.descripcion = "";
                tour.paqueteTurProg_ID = int.Parse(cboPaqueteProgramado.SelectedValue);
                IList<Tb_Detalle_Tour> detalle= operacionesServices.addTourDetalle(tour,int.Parse(cboPaqueteProgramado.SelectedValue));
                if (tour != null)
                {
                    txtCodigoTour.Text = tour.tour_ID.ToString();
                    operacionesServices.updatePaqueteProgramado(tour.paqueteTurProg_ID);
                }
                cboPaqueteProgramado.Enabled = !(detalle.Count > 0);
                cmdAddProgramacion.Enabled = !(detalle.Count > 0);
                gvList.DataSource = detalle;
                gvList.DataBind();

                UCMessageForm.showMessage("El Tour y su detalle ha sido guardado exitosamente", ELogLevel.INFO);
            }
            catch (Exception exc1)
            {
                UCMessageForm.showMessage(exc1.Message, ELogLevel.ERROR);
            }
        }
        #endregion

        #region Metodos privados


        private void nuevoTour()
        {
            try
            {
                cargaDatosIniciales();
                txtCodigoTour.Text = "0";
                cboPaqueteProgramado.SelectedIndex = 0;
                txtDesde.Text = string.Empty;
                txtHasta.Text = string.Empty;
                txtCantidad.Text = string.Empty;
                gvList.DataSource = null;
                gvList.DataBind();
                visualizarFicha(0, true);//listado
                visualizarFicha(1, false);//listado
                habilitarFicha(0);
                cboPaqueteProgramado.Enabled = true;
            }
            catch (Exception exc)
            { 
            }
        }
        private void mostrarRecursosSolicitados()
        {
            gvTipoGuia.DataSource= operacionesServices.getListRecursosSolicitados(int.Parse(hCodigoDetalleTour.Value),1);
            gvTipoGuia.DataBind();
            gvTipoTransporte.DataSource = operacionesServices.getListRecursosSolicitados(int.Parse(hCodigoDetalleTour.Value), 2);
            gvTipoTransporte.DataBind();
        }
        
        private void cargaDatosIniciales()
        {
            cboPaqueteProgramado.Items.Clear();
            txtFechaTour.Text = DateTime.Now.ToShortDateString();
            if (operacionesServices != null)
            {
                IList<Tb_PaqueteProgramado> listaDetPaq = operacionesServices.getListPaqueteProgramadoPendientes();
                foreach (Tb_PaqueteProgramado detalle in listaDetPaq)
                {
                    cboPaqueteProgramado.Items.Add(new ListItem(detalle.Tb_PaqueteTuristico.descripcion, detalle.paqueteTurProg_ID.ToString()));

                }
                if (listaDetPaq.Count > 0)
                {
                    ListItem item = new ListItem();
                    item.Value = "0";
                    item.Text = "-";
                    item.Selected = true;
                    cboPaqueteProgramado.Items.Insert(0, item);
                }
                else
                {
                    UCMessageForm.showMessage("No existe Paquetes programados pendientes",ELogLevel.ERROR);
                    cmdAddProgramacion.Enabled = false;
                    cboPaqueteProgramado.Enabled = false;
                }

                
                cboTipoGuia.Items.Clear();
                Util.LoadDropDownList(cboTipoGuia, mantenimientoServices.getListTipoGuia(), "nombre", "tipoGuia_ID", true, "0", "-");
                Util.LoadDropDownList(cboTipoTransporte, mantenimientoServices.getListTipoTransporte(), "descripcion", "tipoTransporte_ID", true, "0", "-");
              

            }
            
        }
        private void habilitarFicha(int tabIndex)
        {
            this.tbcModos_1.Tabs[tabIndex].Enabled = true;
            this.tbcModos_1.ActiveTabIndex = tabIndex;
            this.tbcModos_1.Tabs[tabIndex].Visible = true;

        }

        private void visualizarFicha(int tabIndex, bool visualiza)
        {
            this.tbcModos_1.Tabs[tabIndex].Enabled = visualiza;
            this.tbcModos_1.Tabs[tabIndex].Visible = visualiza;

        }
        #endregion

        protected void cmdNuevoTour_Click(object sender, EventArgs e)
        {
            nuevoTour();
        }

       

    }
}